package ua.org.oa.ishchenko;

import java.util.ArrayList;
import java.util.Scanner;

/*
 * Реализовать программу учета среднесуточной температуры на протяжении месяца.
 * Ввод данных реализовать с консоли. Вначале должен быть выведен запрос названия месяца,
 * затем значений температуры для каждого числа. Количество дней в месяце программа
 * должна определять автоматически.  Значения хранить в ArrayList.
 * При вводе реализовать проверку корректности вводимых данных, если данные введены
 * не корректно - запросить ввод  повторно.  После  введения данных  вывести
 *  среднемесячную температуру,   дату когда была максимальная температура и
 *  минимальная с указанием ее значения. */

public class Weather {

	private int maxDayInMonth;
	private String month;
	private double dayTemp;
	private double averageTemp;
	private boolean correctMonth = false;

	public void calcTemp() {
		Scanner scanMonth = new Scanner(System.in);
		do {
			System.out.println("Enter the name of month, please");
			month = scanMonth.nextLine();
			switch (month) {
			case "January":
			case "March":
			case "May":
			case "July":
			case "August":
			case "Oclober":
			case "December":
				maxDayInMonth = 31;
				correctMonth = true;
				break;
			case "February":
				maxDayInMonth = 28;
				correctMonth = true;
				break;
			case "April":
			case "June":
			case "September":
			case "November":
				maxDayInMonth = 30;
				correctMonth = true;
				break;

			default:
				System.out.println("You input invalid month, plaese repeat");
				break;
			}
		} while (!correctMonth);

		ArrayList<Double> temperature = new ArrayList<Double>();
		double summTemp = 0;
		final double MIN_TEMP = -50;
		final double MAX_TEMP = 50;
		double minTempDay = MAX_TEMP;
		double maxTempDay = MIN_TEMP;
		int dayWhenMinTemp = 0;
		int dayWhenMaxTemp = 0;

		for (int i = 0; i < maxDayInMonth;) {
			i++;
			Scanner scanTemp = new Scanner(System.in);
			System.out
					.println("Enter the temperature of " + i + " day, please");
			dayTemp = scanTemp.nextDouble();

			if (dayTemp > MIN_TEMP && dayTemp < MAX_TEMP) {
				temperature.add(dayTemp);
				summTemp += dayTemp;
				if (minTempDay > dayTemp) {
					minTempDay = dayTemp;
					dayWhenMinTemp = i;
				}
				if (maxTempDay < dayTemp) {
					maxTempDay = dayTemp;
					dayWhenMaxTemp = i;

				}
			} else {
				System.out.println("Insert invalid temperature, pleas repeat ");
				i--;
			}
		
		}
	
		averageTemp = summTemp / maxDayInMonth;
		System.out.println("Average temperature in " + month + " is "
				+ averageTemp);
		System.out.println("Minimum temperature of " + minTempDay
				+ " degrees was " + dayWhenMinTemp + " of " + month);
		System.out.println("Maximum temperature of " + maxTempDay
				+ " degrees was " + dayWhenMaxTemp + " of " + month);
	}
}
